﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Media;

namespace BattleTank3D.Telas
{
    class GameOver
    {

        /// <summary>
        /// Objeto que contem a imagem de fim de jogo
        /// </summary>
        Texture2D telaFimJogo;

        /// <summary>
        /// Fonte do texto utilizado no fim do jogo
        /// </summary>
        SpriteFont fonteGameOver;

        /// <summary>
        /// viewport padrao, deve mostrar a cena toda
        /// </summary>
        Viewport ViewportOriginal;
       
       
        /// <summary>
        /// Construtor que mantem o ViewPort para que volte ao estado original assim que o usuario sair do jogo
        /// </summary>
        /// <param name="graphicsDevice">objeto GraphicsDevice</param>
        public GameOver(GraphicsDevice graphicsDevice)
        {
            ViewportOriginal = graphicsDevice.Viewport;
        }

        /// <summary>
        /// Carrega o conteudo necessario para apresentar a tela Game Over
        /// </summary>
        /// <param name="Content">objeto que faz referencia a localizacao do Conteudo</param>
        public void LoadContent(ContentManager Content)
        {
            telaFimJogo = Content.Load<Texture2D>("Telas/fimDeJogo");
            fonteGameOver = Content.Load<SpriteFont>("Fonts/gameOverFont");
            
        }
        
        /// <summary>
        /// Metodo que atualiza o Viewport para o estado original
        /// </summary>
        /// <param name="graphicsDevice">objeto GraphicsDevice</param>
        public void Update(GraphicsDevice graphicsDevice)
        {            
            graphicsDevice.Viewport = ViewportOriginal;
            MediaPlayer.Stop();
        }

        
        

        /// <summary>
        /// Metodo que apresenta o fim do jogo
        /// </summary>
        /// <param name="spriteBatch">objeto que auxilia na apresentacão do texto</param>
        /// <param name="larguraTela">objeto que cotem o valor de Window.ClientBounds.Width</param>
        public void Draw(SpriteBatch spriteBatch, int larguraTela)
        {
            spriteBatch.Begin();

            String frase = "Aperte ESC para voltar";
            spriteBatch.Draw(telaFimJogo, Vector2.Zero, Color.White);
            spriteBatch.DrawString(this.fonteGameOver, frase, new Vector2((larguraTela - (larguraTela / 2)) - (this.fonteGameOver.MeasureString(frase).X / 2), 400), Color.Black);
            spriteBatch.End();
        }
    }
}
